'use strict';

import originMarkdownItTextualUml from 'markdown-it-textual-uml';

export default function umlPlugin(md, options) {
  options = options || {}

  // 初始化钱的默认渲染函数
  const defaultRenderer = md.renderer.rules.fence.bind(md.renderer.rules)

  // 先执行原始插件初始化
  originMarkdownItTextualUml(md, options);

  // 获取当前渲染器规则（已被原始插件修改过）
  const pluginFenceRule = md.renderer.rules.fence;

  // 重写fence规则
  md.renderer.rules.fence = (tokens, idx, options, env, slf) => {
    const token = tokens[idx];
    const info = token.info ? md.utils.unescapeAll(token.info).trim() : '';
    const langName = info.split(/\s+/g)[0] || '';

    // 特殊处理mermaid情况
    if (langName === 'mermaid') {
      return defaultRenderer(tokens, idx, options, env, slf);
    }

    // 其他情况使用原始插件处理
    return pluginFenceRule(tokens, idx, options, env, slf);
  };
}
